/*
		字符串函数——strstr函数的使用以及模拟实现
		strtok

		夏思成

		2024年3月30日

		西科大15号公寓楼
*/

//#include <stdio.h>
//#include <string.h>
//
////strstr函数的使用
//
//int main()
//{
//	char arr1[] = "This is a apple";
//	char arr2[] = "is";
//
//	char* ret = strstr(arr1, arr2);
//
//	printf("%s\n", ret);
//	return 0;
//}



////strstr函数的模拟实现
//
//#include <stdio.h>
//#include <assert.h>
//
//char* my_strstr(const char* str1, const char* str2)
//{
//	assert(str1 && str2);
//
//    //如果str2为空字符串，则直接返回str1
//	if (!*str2)
//	{
//		return (char*)str1;
//	}
//
//	char* ch = (char*)str1;
//	char* s1;
//	char* s2;
//
//	while (*ch)
//	{
//		s1 = ch;
//		s2 = (char*)str2;
//
//		//s1、s2都不是\0，并且两者相等
//		while (*s1 && *s2 && !(*s1 - *s2))
//		{
//			//相等之后，指针向后走继续比较
//			s1++;
//			s2++;
//		}
//
//		//在此判断*s2是否为\0，若为\0则说明已经在str1中找到了str2
//		if (!*s2)
//		{
//			return ch;
//		}
//
//		ch++;
//	}
//
//	//如果ch遇到\0，说明已经将str1查找完了，也没有找到str2，这时返回NULL
//	return NULL;
//}
//
//int main()
//{
//	char arr1[] = "This is a apple";
//	char arr2[] = "is";
//
//	char* ret = my_strstr(arr1, arr2);
//
//	printf("%s\n", ret);
//	return 0;
//}


//strtok函数的使用

//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr[] = "abc,def.ghi";
//	char deli[] = ",.";
//
//	char* ret = strtok(arr, deli);
//	printf("%s\n", ret);
//
//	ret = strtok(NULL, deli);
//	printf("%s\n", ret);
//
//	ret = strtok(NULL, deli);
//	printf("%s\n", ret);
//
//	ret = strtok(NULL, deli);
//	printf("%s\n", ret);
//	return 0;
//}



//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr[] = "xia-si-cheng.12138.com";
//	char deli[] = "-.";
//
//	char* str = NULL;
//	for (str = strtok(arr,deli); str != NULL;str = strtok(NULL,deli))
//	{
//		printf("%s\n", str);
//	}
//	return 0;
//}

//
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char arr[] = "xia-si-cheng.12138.com";
//	char deli[] = "-.";
//
//	char* ret = strtok(arr, deli);
//	
//	while (ret)
//	{
//		printf("%s\n", ret);
//
//		ret = strtok(NULL, deli);
//	}
//	return 0;
//}
